今天來談柯里化(Currying)
簡單來說,柯里化就是一個可以接收多個參數列表的函式編寫方式。
先看以下程式:
def sum(x: Int, y: Int) = x + y
sum(1, 2) //Output = 3
這是一個普通的對兩個參數做加法的函式
經過柯里化之後:
def curriedSum(x: Int)(y: Int) = x + y
curriedSum(1)(2) //Output = 3
先來解釋一下這個curriedSum
函式是怎麼運作的
首先,當我們呼叫了curriedSum
,實際上是呼叫了兩次sum
函式
相當於:
def sum(x: Int) = (y: Int) => x + y
val a = sum(1)
a(2) //Output = 3
這邊我們也可以用占位符語法表示
用底線當作第二個參數列表
def curriedSum(x: Int)(y: Int) = x + y
val first = curriedSum(2)_
first(2) //Output = 4
今天就介紹到這邊